#ifndef MODODEBUG_H_
#define MODODEBUG_H_

/*
 * Procedimento para configurar o modo debug
 * Parâmetro 1: Nome do arquivo de entrada do problema (char *)
 * Parâmetro 2: Nome do método utilizado para reposição de página (char *)
 * Parâmetro 3: Tamanho da memória física (unsigned int)
 * Parâmetro 4: Tamanho da página (unsigned int)
 * Parâmetro 5: Quantidade de páginas (tamanho da memória / tamanho da pagina) (unsigned int)
 * Parâmetro 6: Nome do arquivo de saída do log (char *)
 */
void Config(char *entrada, char *metodo, unsigned memoria, unsigned pagina, unsigned qtPags, char*saida);


/*
 * Procedimento para marcar que existe uma alocação livre
 * Parâmetro 1: Número da página (unsigned int)
 * Parâmetro 2: Modo de acesso (escrita ou leitura (char)
 * Parâmetro 3: Índice na memória (unsigned int)
 * Parâmetro 4: Nome do arquivo de saída do log (char *)
 */
void AlocouLivre(unsigned pagina, char rw, unsigned indice, char*saida);

/*
 * Procedimento para marcar no arquivo de log debug que foi encontrada uma pagina
 * Parâmetro 1: Número da página (unsigned int)
 * Parâmetro 2: Modo de acesso (escrita ou leitura (char)
 * Parâmetro 3: Índice na memória (unsigned int)
 * Parâmetro 4: Nome do arquivo de saída do log (char *)
 */
void EncontrouPag(unsigned pagina, char rw, unsigned indice, char*saida);

/*
 * Procedimento para marcar que existe uma alocação livre
 * Parâmetro 1: Número da nova da página (unsigned int)
 * Parâmetro 2: Modo de acesso (escrita ou leitura (char)
 * Parâmetro 3: Número da velha página (unsigned int)
 * Parâmetro 4: Verfica se a pagina foi alterada (int)
 * Parâmetro 5: Índice na memória (unsigned int)
 * Parâmetro 6: Nome do arquivo de saída do log (char *)
 */
void Substitui(unsigned NovaPag, char rw, unsigned OldPag, int pagAlterada, unsigned indice, char*saida);

#endif /* MODODEBUG_H_ */
